/**
 * @description utils controller
 * @author LI
 */

const path = require('path')
const multer = require('@koa/multer')
const fs = require('fs')
const { timeFormat } = require('../utils/dateTime')

// 存储目录
const DIST_FOLDER_PATH = path.join(__dirname, '..', 'public', 'uploadFiles', timeFormat(new Date()))

// 上传文件存放路径、及文件命名
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    // 是否需要创建目录
    if (!fs.existsSync(DIST_FOLDER_PATH)) {
      fs.mkdir(DIST_FOLDER_PATH, function (err) {
        if (err) {
          console.log('---------文件创建失败')
          return
        }
        console.log('---------文件创建成功')
      })
    }
    cb(null, DIST_FOLDER_PATH)
  },
  filename: function (req, file, cb) {
    let type = file.originalname.split('.')[1]
    cb(null, `${file.fieldname}-${Date.now().toString(16)}.${type}`)
  }
})

// 文件上传限制
const limits = {
  // 非文件字段的数量
  fields: 10,
  // 文件大小 单位 b
  fileSize: 1024 * 1024 * 1024,
  // 文件数量
  files: 1
}
const upload = multer({ storage, limits })

module.exports = {
  upload
}
